//  常用公共方法 或者正则

// 是否是链接
export function checkHref(url) {
    var reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/;
    if (!reg.test(url)) {
        return false
    } else {
        return true
    }
}

// 是否是http:// 或者https://开头
export function checkHref2(url) {
    var reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)/;
    if (!reg.test(url)) {
        return false
    } else {
        return true
    }
}

// 是否是手机号
export function checkMobile(url) {
    var reg = /^1(3|4|5|7|8)\d{9}$/
    if (!reg.test(url)) {
        return false
    } else {
        return true
    }
}


// base64转file
export function dataURLtoFile(dataurl, filename = 'file') {
    let arr = dataurl.split(',')
    let mime = arr[0].match(/:(.*?);/)[1]
    let suffix = mime.split('/')[1]
    let bstr = atob(arr[1])
    let n = bstr.length
    let u8arr = new Uint8Array(n)
    while (n--) {
        u8arr[n] = bstr.charCodeAt(n)
    }
    return new File([u8arr], `${filename}.${suffix}`, { type: mime })
}

/**
 * 加法运算，避免数据相加小数点后产生多位数和计算精度损失。
 * 
 * @param num1加数1 | num2加数2
 */
export function numAdd(num1, num2) {
    var baseNum, baseNum1, baseNum2;
    try {
        baseNum1 = num1.toString().split(".")[1].length;
    } catch (e) {
        baseNum1 = 0;
    }
    try {
        baseNum2 = num2.toString().split(".")[1].length;
    } catch (e) {
        baseNum2 = 0;
    }
    baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
    return (num1 * baseNum + num2 * baseNum) / baseNum;
}

/**
 * 减法运算，避免数据相减小数点后产生多位数和计算精度损失。
 * 
 * @param num1被减数  |  num2减数
 */
export function numSub(num1, num2) {
    var baseNum, baseNum1, baseNum2;
    var precision; // 精度
    try {
        baseNum1 = num1.toString().split(".")[1].length;
    } catch (e) {
        baseNum1 = 0;
    }
    try {
        baseNum2 = num2.toString().split(".")[1].length;
    } catch (e) {
        baseNum2 = 0;
    }
    baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
    precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
    return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
}


/**
 * 省市区名称格式 陕西省- 陕西 西安市- 西安 雁塔区- 雁塔
 */
export function formartAreaName(province, city, county) {
    if (province === '新疆维吾尔自治区') province = '新疆自治区'
    if (province === '宁夏回族自治区') province = '宁夏自治区'
    if (province === '广西壮族自治区') province = '广西自治区'
    if (province.indexOf('省') != -1) province = province.split('省')[0]
    if (province.indexOf('市') != -1) province = province.split('市')[0]
    if (province.indexOf('自治区') != -1) province = province.split('自治区')[0]
    if (province.indexOf('特别行政区') != -1) province = province.split('特别行政区')[0]

    if (city.indexOf('市') != -1) city = city.split('市')[0]
    if (city.indexOf('盟') != -1) city = city.split('盟')[0]

    if (county.indexOf('区') != -1) county = county.split('区')[0]
    if (county.indexOf('县') != -1) county = county.split('县')[0]

    return `${province}#${city}#${county}`
}